package com.ruoyi.common.utils;

import org.apache.commons.collections4.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author liutao
 * @version 1.0
 * @description: TODO
 * @date 2024/3/20 16:02
 */
public final class CommonUtil {
    /**
     * 交集
     * @param list1
     * @param list2
     * @return
     */
    private static List<Long> intersect(List<Long> list1, List<Long> list2) {
        return list1.stream().filter(list2::contains).collect(Collectors.toList());
    }

    /**
     * 差集（list1-list2）
     * @param list1
     * @param list2
     * @return
     */
    private static List<Long> minus(List<Long> list1, List<Long> list2) {
        return list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
    }

    /**
     * 并集（不去重）
     * @param list1
     * @param list2
     * @return
     */
    private static List<Long> unionAll(List<Long> list1, List<Long> list2) {
        list1.addAll(list2);
        return list1;
    }

    /**
     * 并集（去重）
     * @param list1
     * @param list2
     * @return
     */
    private static List<Long> union(List<Long> list1, List<Long> list2) {
        list1.addAll(list2);
        return list1.stream().distinct().collect(Collectors.toList());
    }

    public static void main(String[] args) {
        List<Long> list1 = new ArrayList<>();
        list1.add(100L);
        list1.add(200L);

        List<Long> list2 = new ArrayList<>();
        list2.add(100L);
        list2.add(300L);

        System.out.println(intersect(list1, list2));
        System.out.println(minus(list1, list2));
//        list1.retainAll(list2);
//        System.out.println(list1);
        System.out.println(CollectionUtils.subtract(list2,list1));
    }
}
